package openeye.notes; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.Collection; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.util.text.TextComponentTranslation; import openeye.Log; import openeye.notes.CommandNotes.INoteSink; import openeye.notes.entries.NoteEntry; import openeye.storage.IAppendableStorage; import openeye.storage.IDataSource; final class JsonNoteSink implements INoteSink { private final IAppendableStorage<Object> notesDump; JsonNoteSink(IAppendableStorage<Object> notesDump) { this.notesDump = notesDump; } @Override public void dump(Collection<NoteEntry> notes, ICommandSender sender) throws CommandException { JsonArray result = new JsonArray(); for (NoteEntry note : notes) { JsonObject object = note.toJson(); result.add(object); } try { IDataSource<Object> target = notesDump.createNew(); target.store(result); sender.addChatMessage(new TextComponentTranslation("openeye.chat.dumped", target.getId())); } catch (Throwable t) { Log.warn(t, "Failed to store notes"); throw new CommandException("openeye.chat.store_failed"); } } }